package ar.edu.utn.frsf.tpae.a2012.g02.presentacion.utiles;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import ar.edu.utn.frsf.tpae.a2012.g02.servicio.ClienteServicio;
import ar.edu.utn.frsf.tpae.a2012.g02.servicio.CuentaServicio;
import ar.edu.utn.frsf.tpae.a2012.g02.servicio.MovimientoPagoServicio;
import ar.edu.utn.frsf.tpae.a2012.g02.servicio.MovimientoServicio;

/**
 * Clase de utilidad que provee acceso a instancias administradas por Spring.
 * 
 * @author TPAE
 */
public class ServiceLocator {

	private static ApplicationContext context;

	private static ApplicationContext getContext() {
		if (context == null) {
			synchronized (ServiceLocator.class) {
				if (context == null) {
					context = new ClassPathXmlApplicationContext("classpath*:**/application-context-presentacion.xml");
				}
			}
		}
		return context;
	}

	public static ClienteServicio getClienteServicio() {
		return (ClienteServicio) getContext().getBean("clienteServicio");
	}
	
	public static CuentaServicio getCuentaServicio() {
		return (CuentaServicio) getContext().getBean("cuentaServicio");
	}
	
	public static MovimientoServicio getMovimientoServicio() {
		return (MovimientoServicio) getContext().getBean("movimientoServicio");
	}
	
	public static MovimientoPagoServicio getMovimientoPagoServicio() {
		return (MovimientoPagoServicio) getContext().getBean("movimientoPagoServicio");
	}

}
